const mongoose = require('mongoose');

/**
 * 意见反馈模型
 */
const FeedbackSchema = new mongoose.Schema({
    // 提交者的openid
    openid: {
        type: String,
        required: true
    },
    // 反馈类型：1-功能建议，2-问题反馈，3-内容投诉，4-其他
    type: {
        type: Number,
        enum: [1, 2, 3, 4],
        required: true
    },
    // 反馈内容
    content: {
        type: String,
        required: true,
        maxlength: 1000
    },
    // 联系方式（可选）
    contact: {
        type: String,
        default: ''
    },
    // 提交者信息快照
    userInfo: {
        nickName: {
            type: String,
            default: '用户'
        },
        avatarUrl: {
            type: String,
            default: ''
        }
    },
    // 处理状态：0-待处理，1-处理中，2-已处理，3-已关闭
    status: {
        type: Number,
        enum: [0, 1, 2, 3],
        default: 0
    },
    // 管理员回复
    adminReply: {
        content: {
            type: String,
            default: ''
        },
        adminName: {
            type: String,
            default: ''
        },
        replyTime: {
            type: Date,
            default: null
        }
    },
    // 优先级：1-低，2-中，3-高，4-紧急
    priority: {
        type: Number,
        enum: [1, 2, 3, 4],
        default: 2
    },
  // 用户端删除标记（软删除）
  userDeleted: {
    type: Boolean,
    default: false
  },
  // 管理端删除标记（软删除）
  adminDeleted: {
    type: Boolean,
    default: false
  },
    // 创建时间
    createTime: {
        type: Date,
        default: Date.now
    },
    // 更新时间
    updateTime: {
        type: Date,
        default: Date.now
    }
});

// 创建索引以提高查询性能
FeedbackSchema.index({ openid: 1 });
FeedbackSchema.index({ status: 1 });
FeedbackSchema.index({ createTime: -1 });
FeedbackSchema.index({ type: 1 });
FeedbackSchema.index({ userDeleted: 1 });
FeedbackSchema.index({ adminDeleted: 1 });

// 更新时间自动更新
FeedbackSchema.pre('save', function(next) {
    this.updateTime = new Date();
    next();
});

module.exports = mongoose.model('Feedback', FeedbackSchema);